Galaxyを利用したゲノム解析へ入門 環境構築と基本操作編
連休を利用してゲノム解析に入門してみました。といっても初歩の初歩です。実際にゲノム解析をやってみて、生物学の専門用語と、なにを行うときに計算量が多くスパコンが必要になるのかを知りたいのが目的です。現在の理解度は「HPCぼちぼち、生物わからん」でゲノム解析をやってみたまでが既に遠い道のりのように思えます。
幸いなことにぴったりな本がありましたのでご紹介します。
ゲノム解析が誰でもできるようになる本 — Docker×Galaxyで簡単ゲノム解析
「特技:ゲノム解析」を加えませんか?
・生物をよく知らない方
・解析ができない生物専攻の方上記にいずれかに当てはまる方は、是非本書でバイオインフォマティクスを簡単に学んでみましょう。
やってみましょう。せっかくなのでEC2で環境用意して進めてみます。
書くこと・書かないこと
ゲノム解析が誰でもできるようになる本は、お手元の端末でGalaxyをDockerコンテナで実行し、試せるハンズオン形式で紹介されています。 当記事ではEC2(Ubuntu 20.04)での環境構築と、まったくの初学者である私がGalaxyを使うまでに調べたこと、本に書かれている内容とGalaxyのバージョンの違いにより手順どおりに実行できなかったことを記録に残します。
専門用語の説明はゲノム解析が誰でもできるようになる本をご参照ください。教科書的な小難しい説明をにひらたく説明してくれています。なんとなくわかるレベルで説明されているため、なんとなく知って気になった単語・用語は個々に調べればよいので必要十分です。
検証環境
項目 | 値 |
---|---|
OS | Ubuntu 20.04 LTS |
AMI | ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20210223 |
InstanceType | t3a.large |
EBS | 30GB |
Docker | 20.10.6 |
Galaxy | 20.05 |
セキュリティグループはSSHと、WEBブラウザでアクセス時にTCP 8080がインバウンドに必要になります。ソースは特定のIPからのみに制限しておきましょう。
Galaxyとは
WEBブラウザから利用できるWEBベースのデータ解析ツールです。CLIオンリーの世界かと思っていたのですがGUIでの解析ツールもあることが驚きでした。
galaxyproject/galaxy: Data intensive science for everyone.
Dockerインストール
今回検証に利用するEC2のOSはUbuntu 20.04です。Dockerをインストールしたときの手順を残します。本ではMacでの導入方法が紹介されています。
公式のドキュメントに沿って進めていけば困ることはありませんでした。
インストール手順
古いバージョンの削除。今回使用したUbuntuのAMIには該当するパッケージは含まれていませんでした。
$ sudo apt-get remove docker docker-engine docker.io containerd runc Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package docker-engine
Docker公式のGPGキーを追加します。
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
安定版のリポジトリstable
を指定しました。
echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
やっとインストールです。
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Dockerインストール完了しました。
$ docker version Client: Docker Engine - Community Version: 20.10.6 API version: 1.41 Go version: go1.13.15 Git commit: 370c289 Built: Fri Apr 9 22:47:17 2021 OS/Arch: linux/amd64 Context: default Experimental: true Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version: dial unix /var/run/docker.sock: connect: permission denied
hello-world
で動作確認するとイメージのPullに失敗します。
$ docker run hello-world docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.
/var/run/docker.sock
はroot
か、docker
グループしか権限がありませんでした。
$ ls -l /var/run/docker.sock srw-rw---- 1 root docker 0 May 1 12:41 /var/run/docker.sock
docker
グループにubuntu
ユーザを追加します。一度ログアウト・ログインしてグループ追加を反映させます。
$ sudo usermod -g docker ubuntu $ exit
sudo
なしでdockerコマンドを使えるので動作確認完了です。
$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world b8dfde127a29: Pull complete Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. --- 省略 ---
Galaxy起動
Galaxyのイメージから実行してGalaxyを起動して、WEBブラウザからアクセスします。
$ docker run -d -p 8080:80 quay.io/galaxy/introduction-training
WEBブラウザでhttp://[PUBLIC_IP]:8080
にアクセスします。Galaxyのトップページにアクセスできます。
上部メニューから管理画面を開きログインします。デフォルトパスワードが本を書かれたときとは変更になっているようでadminではなくpasswordでログインできます。
項目 | 値 |
---|---|
Public Name or Email Address | admin@galaxy.org |
Password | password |
ディスクサイズ補足
GalaxyのDockerイメージを落としてくると約12GB消費するためEBSのサイズに注意してください。当初15GBのディスクサイズで作成し、容量不足でイメージを落とませんでした。30GBに拡張してから実行しました。最初から20GB以上のディスクサイズで作成しておきましょう。
# Befor pull image $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 30G 2.2G 27G 8% / # After pull image $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 30G 14G 16G 47% /
Galaxy基本操作
ヒストリーに名前をつけて管理します。ヒストリーは解析結果の解析手順を自動記録でき、他のユーザにヒストリーを共有することもできます。
Unnamed historyをクリックしhanson1へ名前を変更しました。
チュートリアル用のテストデータをURL指定でアップロードします。テストデータは架空の黄色ブドウ球菌のミニチュアゲノムだそうですが、ぜんぜんピンとこないです。
アップロードアイコンをクリックします。
テストデータを提供しているURLから直接Galaxyへアップロードできるのは便利です。いったんローカルに落とさなくて済みますからね。
ヒストリーにアップロードしたファイルの情報が記録されました。アップデートしたファイルの内容は目のアイコンから確認できます。
下記の羅列が続いたデータを確認できました。
このファイルはFASTQ形式と呼ばれ、次世代シーケンサーなどから出力された塩基配列のデータを保存するデファクトスタンダートの形式です。
塩基配列とクオリティスコアが載っているテキストベースのファイル形式です。各行の意味は下記の通りです。
項目 | 値 |
---|---|
赤線 | 配列ID |
青線 | 塩基配列 |
緑線 | クオリティスコア |
ツールのインストール
本と異なる点はFastQCインストール済みで、Filter by qualityは検索してもできませんでした。検索のレイアウトも変わっていたため検索方法のキャプチャ載せておきます。ちなみにFilter by qualityもインストール済みで後々使用しました。
検索して表示されたfastqcをクリックすると展開されます。
FastQCツール実行
Toolsから検索します。
さきほどアップロードしたFASTQファイルがすでに選択されていました。そのまま実行します。
ヒストリーに実行結果が記録されました。Web pageと表示されている実行結果を確認してみます。
画面真ん中にデータが表示されます。
見切れてしまったのでグラフだけを載せます。クオリティスコアの確認しやすい。
Filter by qualityツール実行
クオリティの低いリードを除去できるツールです。
リードとは次世代シーケンサー(NGS)でDNAを読み取とるとDNAが断面化されます。断片化した塩基配列がリードと呼ばれています。 よくシュレッダーにかけたといった表現をみます。いまのところ一番イメージしやすく、しっくりきています。
Galaxy (ゲノムビッグデータ解析)におけるオンデマンド機能の活用より引用
こちらのツールも同様にアップロードしたFASTQファイルがすでに選択されていました。Quality cut-off value
の値を大きくするとより低クオリティのリードを削除します。
ヒストリーに実行結果が追記されました。実行結果を確認してみます。
目のアイコンの結果を確認するより
ヒストリーを展開して詳細を確認するものでした。全体の14%にあたるクオリティの低いリードが削除されたことを確認できます。
ちなみにQuality cut-off value
を50に設定して実行したところ、全部(100%)削除されてしまいました。グラフからクオリティスコアを確認すると上限が40でしたので当然の結果でした。
なぜクオリティの低いリードを取り除くのかというと
シーケンスクオリティが低いリードを事前に除いておくことによって、リファレンスゲノムマッピングやアセンブルの精度や計算コストを軽減することができる。またそれらの解析の精度を純粋に評価するためにも、シーケンスクオリティの問題を分けるのが重要なことである。
シーケンスクオリティが低いのリードを除く | ngstips2より引用
解析精度を高めるというのは想像に容やすいです。いくらスパコンを利用してゲノム解析するとはいえ計算量が膨大なだけに不要な計算は避けるということは大切なんですね。
おわりに
Dockerインストール手順で長くなってしまったのでGalaxyの基礎操作まででいったんまとめました。ゲノム解析が誰でもできるようになる本の1、2章の範囲です。3章からゲノム解析に入っていきます。いまのところ初学者の私には都度都度用語を調べたりと生物の弱さが光ります。